﻿using System;

namespace StatsData.Api.Models
{
    public class BookingStatisDetailResultModel
    {
        public string LineId { get; set; }

        /// <summary>
        /// 日期
        /// </summary>
        public DateTime Time { get; set; }

        /// <summary>
        /// 投入数
        /// </summary>
        public decimal TotalInQty { get; set; }

        /// <summary>
        /// 产出数
        /// </summary>
        public decimal TotalFinishQty { get; set; }

        /// <summary>
        /// 最后一个工序完成数（通常是栈板报工）
        /// </summary>
        public decimal LastProcedureFinishQty { get; set; }

        /// <summary>
        /// 总不良数
        /// </summary>
        public decimal TotalBadQty { get; set; }

        /// <summary>
        /// 总作业时间（各工序作业时间的并集后算作业时间）
        /// </summary>
        public decimal TotalWorkHour { get; set; }

        /// <summary>
        /// 实际工时=产出总工时+投入总工时
        /// </summary>
        public decimal TotalUserWorkHour { get; set; }

        /// <summary>
        /// 目标产能=取日读单上的计划量
        /// </summary>
        public decimal PlanTotalFinishQty { get; set; }

        /// <summary>
        /// UPPH
        /// </summary>
        public decimal Upph { get; set; }

        /// <summary>
        /// 投入UPPH
        /// </summary>
        public decimal InUpph { get; set; }

        /// <summary>
        /// 产出UPPH
        /// </summary>
        public decimal FinishUpph { get; set; }

        /// <summary>
        /// 产出工时 = 投入数 * 总装工时 + 产出数 * （包装工时 + 老化工时）
        /// </summary>
        public decimal TotalTotalWorkHour { get; set; }

        /// <summary>
        /// 直接生产效率=产出工时/实际工时（总工时）
        /// <para>注意：不同车间可能公式不一样，通过字典配置自定义</para>
        /// </summary>
        public decimal WipRatio { get; set; }

        /// <summary>
        /// 合格率=（产出数-不良数）/产出数
        /// </summary>
        public decimal OkRatio { get; set; }

        /// <summary>
        /// 达成率=完成数/目标产能，目标产能比例：日看板需要根据当前时间算ratio，定时任务ratio=1
        /// <para>注意：不同车间可能公式不一样，通过字典配置自定义</para>
        /// </summary>
        public decimal CompleteRatio { get; set; }

        /// <summary>
        /// 实际出勤人数
        /// </summary>
        public decimal TotalUserQty { get; set; }

        /// <summary>
        /// 应出勤人数
        /// </summary>
        public decimal TotalPlanUserQty { get; set; }

        /// <summary>
        /// 投入总工时=投入作业时间*投入到岗人数
        /// </summary>
        public decimal TotalInUserWorkHour { get; set; }

        /// <summary>
        /// 产出总工时=产出作业时间*产出到岗人数
        /// </summary>
        public decimal TotalFinishUserWorkHour { get; set; }

        /// <summary>
        /// 实际上班时间
        /// </summary>
        public decimal LineWorkHour { get; set; }

        /// <summary>
        /// 计划上班时间
        /// </summary>
        public decimal PlanTotalWorkHour { get; set; }
    }
}
